#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "escalonadorFifo.h"
#include "escalonadorSJF.h"

int isNumber(char *input)
{
	int len;
	char *aux = input;
	
	while(*aux) {
		if(!(*aux >= 48 && *aux <= 57)) {
			return 0;
		}
		aux++;
	}

	return 1;
}

#define TIPO_FIFO 1
#define TIPO_SJF 2

int main(int argc, char *argv[])
{
  //FILE *entrada;
	int tipoEscalonador = -1;
	int alpha = -1, arquivo = -1;
	int i;
	
	
	if(argc == 5){
		if(!strcmp(argv[1], "-sch") || !strcmp(argv[3], "-sch")) {
			if(!strcmp(argv[2], "FIFO") || !strcmp(argv[4], "FIFO")) {
				tipoEscalonador = TIPO_FIFO;
			}else if(!strcmp(argv[2], "SJF") || !strcmp(argv[4], "SJF")) 
				printf("Parametros inválidos\n sched –sch [ESCALONADOR] –alfa [ALFA] –log [ARQUIVO]\n");
		} 
		if(!strcmp(argv[1], "-log")) arquivo = 2;
		if(!strcmp(argv[3], "-log")) arquivo = 4;
		if(arquivo != -1 && tipoEscalonador != -1) fifoLendoArquivo(argv[arquivo]);
		
	}else if(argc == 7) {
		if(!strcmp(argv[1], "-sch") || !strcmp(argv[3], "-sch") || !strcmp(argv[5], "-sch")) {
			if(!strcmp(argv[2], "FIFO") || !strcmp(argv[4], "FIFO") || !strcmp(argv[6], "FIFO")) {
				tipoEscalonador = TIPO_FIFO;
			}else if(!strcmp(argv[2], "SJF") || !strcmp(argv[4], "SJF") || !strcmp(argv[6], "SJF")) 
				tipoEscalonador = TIPO_SJF;
		}
		if(!strcmp(argv[1], "-alfa")) alpha = (isNumber(argv[2]) ? atoi(argv[2]) : -1);
		if(!strcmp(argv[3], "-alfa")) alpha = (isNumber(argv[4]) ? atoi(argv[4]) : -1);
		if(!strcmp(argv[5], "-alfa")) alpha = (isNumber(argv[6]) ? atoi(argv[6]) : -1);
		
		if(!strcmp(argv[1], "-log")) arquivo = 2;
		if(!strcmp(argv[3], "-log")) arquivo = 4;
		if(!strcmp(argv[5], "-log")) arquivo = 6;
		
		if(alpha != -1 && arquivo != -1 && tipoEscalonador != -1){
			if(tipoEscalonador == TIPO_FIFO) fifoLendoArquivo(argv[arquivo]);
			
			if(tipoEscalonador == TIPO_SJF){
				 sjfLendoArquivo(argv[arquivo], alpha);
			}
		}
			}else printf("Parametros inválidos\n sched –sch [ESCALONADOR] –alfa [ALFA] –log [ARQUIVO]\n");
	
	return 0;
}